//using Microsoft.AspNetCore.Mvc;
//using System.Reflection;
//using System.IO;
//using Microsoft.Extensions.Logging;

//namespace RuoVea.OmiUI.Test._6._0.Controllers
//{
//    [Route("[controller]")]
//    [ApiController]
//    public class StaticFileController : ControllerBase
//    {
//        private readonly IWebHostEnvironment _hostingEnvironment;
//        private readonly ILogger<StaticFileController> _logger;

//        public StaticFileController(IWebHostEnvironment hostingEnvironment, ILogger<StaticFileController> logger)
//        {
//            _hostingEnvironment = hostingEnvironment;
//            _logger = logger;
//        }

//        // 路由为 /staticfile/get/{*path}，支持多级路径
//        [HttpGet("get/{*path}")]
//        public IActionResult GetFile(string path)
//        {
//            try
//            {
//                _logger.LogInformation("请求静态资源: {Path}", path);
                
//                // 1. 尝试从物理文件系统获取（开发环境更方便调试）
//                if (_hostingEnvironment.WebRootPath != null)
//                {
//                    string physicalPath = Path.Combine(_hostingEnvironment.WebRootPath, path);
//                    _logger.LogInformation("检查物理路径: {PhysicalPath}", physicalPath);
                    
//                    if (System.IO.File.Exists(physicalPath))
//                    {
//                        _logger.LogInformation("找到物理文件");
//                        var fileStream = new FileStream(physicalPath, FileMode.Open, FileAccess.Read);
//                        var physicalContentType = GetContentType(path);
//                        return File(fileStream, physicalContentType);
//                    }
//                }

//                // 2. 尝试从嵌入资源获取
//                // 从RuoVea.OmiUI程序集中获取资源
//                _logger.LogInformation("尝试从嵌入资源获取");
//                var assembly = Assembly.Load("RuoVea.OmiUI");
                
//                // 打印所有可用的嵌入资源，用于调试
//                var allResources = assembly.GetManifestResourceNames();
//                _logger.LogInformation("可用的嵌入资源数量: {Count}", allResources.Length);
//                foreach (var res in allResources.Take(10)) // 只打印前10个，避免日志过多
//                {
//                    _logger.LogInformation("嵌入资源: {Resource}", res);
//                }
                
//                // 构建资源路径（将/替换为.，并添加命名空间前缀）
//                string resourcePath = $"RuoVea.OmiUI.wwwroot.{path.Replace('/', '.')}";
//                _logger.LogInformation("尝试资源路径1: {ResourcePath}", resourcePath);
                
//                Stream resourceStream = assembly.GetManifestResourceStream(resourcePath);
                
//                if (resourceStream == null)
//                {
//                    // 尝试其他可能的资源路径格式
//                    resourcePath = $"wwwroot.{path.Replace('/', '.')}";
//                    _logger.LogInformation("尝试资源路径2: {ResourcePath}", resourcePath);
//                    resourceStream = assembly.GetManifestResourceStream(resourcePath);
//                }

//                if (resourceStream == null)
//                {
//                    _logger.LogWarning("资源未找到: {Path}", path);
//                    return NotFound($"资源未找到: {path}");
//                }

//                _logger.LogInformation("成功找到嵌入资源");
//                var embeddedContentType = GetContentType(path);
//                return File(resourceStream, embeddedContentType);
//            }
//            catch (Exception ex)
//            {
//                _logger.LogError(ex, "获取资源时出错: {Path}", path);
//                return StatusCode(500, $"获取资源时出错: {ex.Message}");
//            }
//        }

//        // 获取文件的MIME类型
//        private string GetContentType(string path)
//        {
//            var extension = Path.GetExtension(path).ToLowerInvariant();
//            switch (extension)
//            {
//                case ".js": return "application/javascript"; 
//                case ".css": return "text/css";
//                case ".html": return "text/html";
//                case ".png": return "image/png";
//                case ".jpg":
//                case ".jpeg": return "image/jpeg";
//                case ".gif": return "image/gif";
//                case ".svg": return "image/svg+xml";
//                case ".woff": return "application/font-woff";
//                case ".woff2": return "application/font-woff2";
//                case ".ttf": return "application/font-sfnt";
//                case ".eot": return "application/vnd.ms-fontobject";
//                default: return "application/octet-stream";
//            }
//        }
//    }
//}